package cn.wolfcode.springcloud.service.impl;

import cn.wolfcode.springcloud.Order;
import cn.wolfcode.springcloud.domain.Product;
import cn.wolfcode.springcloud.feign.IProductFeignApi;
import cn.wolfcode.springcloud.service.IOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.Date;
import java.util.UUID;
@Slf4j
@Service
public class OrderServiceImpl implements IOrderService{
    //product-server服务地址
      //public static final String PRODUCT_URL="http://localhost:8080";
    //这种方式存在问题，写死了product-server的端口，后面product-server做了集群，那么这种
    //方式无法使用集群中其他product-server服务，比如写死了8080这个端口就用不了80801这个
    //此时解决方法使用ribbon组件里面的负载均衡（多个服务器对请求尽量平均分配）方式

    //PRODUCT-SERVE是Rureka中的key，可以通过服务名获取到product-server服务ip端口
    //public static final String PRODUCT_URL = "http://PRODUCT-SERVER";
    //@Autowired
   // private RestTemplate template;

    //使用Feign方式
    @Autowired
    private IProductFeignApi productFeignApi;



    @Override
    public Order save(Long userId, Long productId) {
        //获取product对象
        //Product product = null;//假装通过远程获取product-server
        //template.getForbject()
        //Product product=template.getForObject(PRODUCT_URL + "/product/get/" + productId, Product.class);
        //记录调用日志
        //log.info("OrderServiceImpl.save....");
        //使用feign接口方式调用
        Product product = productFeignApi.get(productId);

        Order order = new Order();
        order.setOrderNo(UUID.randomUUID().toString().replace("-",""));
        order.setCreateTime(new Date());
        order.setUserId(userId);
        order.setProductName(product.getName());
        order.setProductPrice(product.getPrice());
        System.out.println("执行保存订单操作");
        return order;
    }
}